Fix external-device-migrate infinite loop.
authorKeir Fraser <keir@xensource.com>
Tue, 2 Oct 2007 08:56:53 +0000 (09:56 +0100)
committerKeir Fraser <keir@xensource.com>
Tue, 2 Oct 2007 08:56:53 +0000 (09:56 +0100)
For some (yet) unknown reason extern-device-migrate is called
twice, once with a missing domname argument.

The following invocation loops forever:
 external-device-migrate -domname
because "shift 2" never shifts ($# < 2) and $# is always 1.

From: Pascal Bouchareine <pascal@gandi.net>
Signed-off-by: Keir Fraser <keir@xensource.com>
tools/examples/external-device-migrate

index c7c99afec33224cefe3511edc2f1fae1914d28bd..a4113483a8a8325d540c0188d1a4facb662b5173 100644 (file)
@@ -16,6 +16,7 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 
+set -x
 
 # This script is called by XenD for migration of external devices
 # It does not handle the migration of those devices itself, but
@@ -57,11 +58,11 @@ function evaluate_params()
        stype=""
        while [ $# -ge 1 ]; do
                case "$1" in
-               -step)          step=$2; shift 2;;
-               -host)          host=$2; shift 2;;
-               -domname)       domname=$2; shift 2;;
-               -type)          typ=$2; shift 2;;
-               -subtype)       stype=$2; shift 2;;
+               -step)          step=$2; shift; shift;;
+               -host)          host=$2; shift; shift;;
+               -domname)       domname=$2; shift; shift;;
+               -type)          typ=$2; shift; shift;;
+               -subtype)       stype=$2; shift; shift;;
                -recover)       recover=1; shift;;
                -help)          ext_dev_migrate_usage; exit 0;;
                *)              break;;